home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / OS⁄Toolbox / Apple Events / AE & Scripting Dev Kit / AE Sample Applications / Quill 1.0d1 / Quill Code / Quill.r < prev    next >
Encoding:
Text File  |  1992-03-05  |  10.3 KB  |  478 lines  |  [TEXT/MPS ]

  1. /*------------------------------------------------------------------------------
  2. #
  3. #    Quill
  4. #
  5. #    Apple Macintosh User Programming Group
  6. #
  7. #    MultiFinder-Aware, AppleEvents-Aware Simple Styled TextEdit Sample Application
  8. #
  9. #    by Bennet Marks
  10. #
  11. #    Copyright © 1991 Apple Computer, Inc.
  12. #
  13. #    Quill based on TEStyleSample  (Copyright © 1989 Apple Computer, Inc.)
  14. #
  15. #
  16. #    Quill.r    -    Rez Source
  17. #
  18. #    All rights reserved.
  19. #
  20. #    Versions:    1.0                        02/18/91
  21. #
  22. #    Components:    Quill.p
  23. #                QuillGlue.a
  24. #                Quill.r
  25. #                Quill.h    
  26. #                Quill.make
  27. #
  28. #    Quill is an example application that demonstrates how 
  29. #    to initialize the commonly used toolbox managers, operate 
  30. #    successfully under MultiFinder, handle desk accessories and 
  31. #    create, grow, and zoom windows. Both styled and fundamental TextEdit 
  32. #    toolbox calls and TextEdit autoscroll are demonstrated. It 
  33. #    also shows how to create and maintain scrollbar controls as well
  34. #    as implementing a basic printing loop.
  35. #
  36. #   It also handles AppleEvents, and is written with an eye towards
  37. #   making it work with the AppleEvents Object Model and the Open Scripting
  38. #   Architecture. It was built on TEStyleSample, with more functionality and
  39. #   AppleEvent awareness added in.
  40. #
  41. #    It does not by any means demonstrate all the techniques you 
  42. #    need for a large application. In particular, Quill does not 
  43. #    cover exception handling, multiple windows/documents, 
  44. #    sophisticated memory management, or undo. All of 
  45. #    these are vital parts of a normal full-sized application.
  46. #
  47. #    This application is an example of the form of a Macintosh 
  48. #    application; it is NOT a template. It is NOT intended to be 
  49. #    used as a foundation for the next world-class, best-selling, 
  50. #    600K application. A stick figure drawing of the human body may 
  51. #    be a good example of the form for a painting, but that does not 
  52. #    mean it should be used as the basis for the next Mona Lisa.
  53. #
  54. #    We recommend that you review this program, TESample or Sample before 
  55. #    beginning a new application. TESample is a simpler version of Quill
  56. #    without styles and Sample is a simple app. which doesn’t 
  57. #    use TextEdit or the Control Manager.
  58. #
  59. ------------------------------------------------------------------------------*/
  60.  
  61. /*------------------------------------------------------------------------------
  62. #    Modification History
  63. #    
  64. #    02/18/91    BHM        New today
  65. #    02/21/91    BHM        Put in rUserError (used in addition to rUserAlert)
  66. #    02/25/91    BHM        Added "Print File" item to edit menu
  67. #    03/01/91    BHM        Put in rYesOrNo ALRT and DITL
  68. #    03/06/91    BHM        Added a new error string (not one we would ever want
  69. #                        a user to see)
  70. #    05/31/91    BHM        Added "Quit NOW" file menu command
  71.  
  72. ------------------------------------------------------------------------------*/
  73.  
  74. #include "SysTypes.r"
  75. #include "Types.r"
  76. #include "Quill.h"
  77.  
  78.  
  79.  
  80. resource 'vers' (1) {
  81.     0x01, 0x00, development, 0x01, verUS,
  82.     "1.0d1",
  83.     "1.0d1, Copyright © Apple Computer, Inc. 1991-1992 "
  84. };
  85.  
  86. /* we use an MBAR resource to conveniently load all the menus */
  87.  
  88. resource 'MBAR' (rMenuBar, preload) {
  89.     { mApple, mFile, mEdit, mFont, mFontSize, mStyle, mMathoms };        /* seven menus */
  90. };
  91.  
  92.  
  93. resource 'MENU' (mApple, preload) {
  94.     mApple, textMenuProc,
  95.     AllItems & ~MenuItem2,    /* disable dashed line, enable About and DAs */
  96.     enabled, apple,
  97.     {
  98.         "About Quill…",
  99.             noicon, nokey, nomark, plain;
  100.         "-",
  101.             noicon, nokey, nomark, plain
  102.     }
  103. };
  104.  
  105. resource 'MENU' (mFile, preload) {
  106.     mFile, textMenuProc,
  107.     NoItems,                /* disable everything, program does the enabling */
  108.     enabled, "File",
  109.     {
  110.         "New",
  111.             noicon, "N", nomark, plain;
  112.         "Open",
  113.             noicon, "O", nomark, plain;
  114.         "-",
  115.             noicon, nokey, nomark, plain;
  116.         "Close",
  117.             noicon, "W", nomark, plain;
  118.         "Save",
  119.             noicon, "S", nomark, plain;
  120.         "Save As…",
  121.             noicon, nokey, nomark, plain;
  122.         "Revert",
  123.             noicon, nokey, nomark, plain;
  124.         "-",
  125.             noicon, nokey, nomark, plain;
  126.         "Page Setup…",
  127.             noicon, nokey, nomark, plain;
  128.         "Print…",
  129.             noicon, nokey, nomark, plain;
  130.         "Print File…",
  131.             noicon, nokey, nomark, plain;
  132.         "-",
  133.             noicon, nokey, nomark, plain;
  134.         "Quit",
  135.             noicon, "Q", nomark, plain;
  136.         "Quit NOW",
  137.             noicon, nokey, nomark, plain
  138.     }
  139. };
  140.  
  141. resource 'MENU' (mEdit, preload) {
  142.     mEdit, textMenuProc,
  143.     NoItems,                /* disable everything, program does the enabling */
  144.     enabled, "Edit",
  145.      {
  146.         "Undo",
  147.             noicon, "Z", nomark, plain;
  148.         "-",
  149.             noicon, nokey, nomark, plain;
  150.         "Cut",
  151.             noicon, "X", nomark, plain;
  152.         "Copy",
  153.             noicon, "C", nomark, plain;
  154.         "Paste",
  155.             noicon, "V", nomark, plain;
  156.         "Clear",
  157.             noicon, nokey, nomark, plain;
  158.         "-",
  159.             noicon, nokey, nomark, plain;
  160.         "Select All",
  161.             noicon, "A", nomark, plain
  162.     }
  163. };
  164.  
  165. /* Added for TEStyleSample */
  166. /* Font Menu */
  167. resource 'MENU' (mFont, preload) {
  168.     mFont, textMenuProc,
  169.     AllItems,                /* enable everything since these are fonts     */
  170.     enabled, "Font",
  171.      {
  172.      }
  173. };
  174.  
  175. /* Added for TEStyleSample */
  176. /* Size Menu Items */
  177. resource 'MENU' (mFontSize, preload) {
  178.     mFontSize, textMenuProc,
  179.     AllItems,                /* enable everything, since these are font sizes */
  180.     enabled, "Font Size",
  181.      {
  182.          "9 Point", noIcon, noKey, noMark, plain,
  183.         "10 Point", noIcon, noKey, noMark, plain,
  184.         "12 Point", noIcon, noKey, noMark, plain,
  185.         "14 Point", noIcon, noKey, noMark, plain,
  186.         "18 Point", noIcon, noKey, noMark, plain,
  187.         "24 Point", noIcon, noKey, noMark, plain
  188.      }
  189. };
  190.  
  191. /* Added for TEStyleSample */
  192. /* Style Menu Items */
  193. resource 'MENU' (mStyle, preload) {
  194.     mStyle, textMenuProc,
  195.     AllItems & ~MenuItem2,    /* enable everything except dash */
  196.     enabled, "Style",
  197.      {
  198.         "Plain",
  199.             noicon, "P", nomark, plain;
  200.         "-",
  201.             noicon, nokey, nomark, plain;
  202.         "Bold",
  203.             noicon, "B", nomark, bold;
  204.         "Italic",
  205.             noicon, "I", nomark, italic;
  206.         "Underline",
  207.             noicon, "U", nomark, underline;
  208.         "Outline",
  209.             noicon, nokey, nomark, outline;
  210.         "Shadow",
  211.             noicon, nokey, nomark, shadow
  212.     }
  213. };
  214.  
  215. resource 'MENU' (mMathoms, preload) {
  216.     mMathoms, textMenuProc,
  217.     NoItems,                /* disable everything, program does the enabling */
  218.     enabled, "Mathoms",
  219.      {
  220.         "Show All Errors",
  221.             noicon, nokey, nomark, plain
  222.     }
  223. };
  224.  
  225.  
  226. /* this ALRT and DITL are used as an About screen */
  227.  
  228. resource 'ALRT' (rAboutAlert, purgeable) {
  229.     {40, 20, 160, 350}, rAboutAlert, {
  230.         OK, visible, silent;
  231.         OK, visible, silent;
  232.         OK, visible, silent;
  233.         OK, visible, silent
  234.     };
  235. };
  236.  
  237. resource 'DITL' (rAboutAlert, purgeable) {
  238.     { /* array DITLarray: 5 elements */
  239.         /* [1] */
  240.         {88, 234, 108, 314},
  241.         Button {
  242.             enabled,
  243.             "OK"
  244.         },
  245.         /* [2] */
  246.         {8, 8, 24, 350},
  247.         StaticText {
  248.             disabled,
  249.             "AppleEvents-Aware Styled TextEdit Application"
  250.         },
  251.         /* [3] */
  252.         {32, 8, 48, 350},
  253.         StaticText {
  254.             disabled,
  255.             "Copyright © Apple Computer 1991-1992"
  256.         },
  257.         /* [4] */
  258.         {56, 8, 72, 136},
  259.         StaticText {
  260.             disabled,
  261.             "Brought to you by:"
  262.         },
  263.         /* [5] */
  264.         {80, 24, 112, 167},
  265.         StaticText {
  266.             disabled,
  267.             "Bennet Marks - DTE"
  268.         }
  269.     }
  270. };
  271.  
  272.  
  273. /* this ALRT and DITL are used as an error screen */
  274.  
  275. resource 'ALRT' (rUserError, purgeable) {
  276.     {40, 20, 150, 260},
  277.     rUserError,
  278.     { /* array: 4 elements */
  279.         /* [1] */
  280.         OK, visible, silent,
  281.         /* [2] */
  282.         OK, visible, silent,
  283.         /* [3] */
  284.         OK, visible, silent,
  285.         /* [4] */
  286.         OK, visible, silent
  287.     }
  288. };
  289.  
  290.  
  291. resource 'DITL' (rUserError, purgeable) {
  292.     { /* array DITLarray: 3 elements */
  293.         /* [1] */
  294.         {80, 150, 100, 230},
  295.         Button {
  296.             enabled,
  297.             "OK"
  298.         },
  299.         /* [2] */
  300.         {10, 60, 60, 230},
  301.         StaticText {
  302.             disabled,
  303.             "Error. ^0."
  304.         },
  305.         /* [3] */
  306.         {8, 8, 40, 40},
  307.         Icon {
  308.             disabled,
  309.             2
  310.         }
  311.     }
  312. };
  313.  
  314. /* this ALRT and DITL are used as an alert screen */
  315.  
  316. resource 'ALRT' (rUserAlert, purgeable) {
  317.     {40, 20, 250, 360},
  318.     rUserAlert,
  319.     { /* array: 4 elements */
  320.         /* [1] */
  321.         OK, visible, silent,
  322.         /* [2] */
  323.         OK, visible, silent,
  324.         /* [3] */
  325.         OK, visible, silent,
  326.         /* [4] */
  327.         OK, visible, silent
  328.     }
  329. };
  330.  
  331.  
  332. resource 'DITL' (rUserAlert, purgeable) {
  333.     { /* array DITLarray: 3 elements */
  334.         /* [1] */
  335.         {180, 250, 200, 330},
  336.         Button {
  337.             enabled,
  338.             "OK"
  339.         },
  340.         /* [2] */
  341.         {10, 60, 160, 330},
  342.         StaticText {
  343.             disabled,
  344.             "Listen up: ^0."
  345.         },
  346.         /* [3] */
  347.         {8, 8, 40, 40},
  348.         Icon {
  349.             disabled,
  350.             2
  351.         }
  352.     }
  353. };
  354.  
  355.  
  356.  
  357. /* this ALRT and DITL are used for a yes/no/cancel screen */
  358.  
  359. resource 'ALRT' (rYesOrNo, purgeable) {
  360.     {100,120, 220, 358},
  361.     rYesOrNo,
  362.     { /* array: 4 elements */
  363.         /* [1] */
  364.         OK, visible, silent,
  365.         /* [2] */
  366.         OK, visible, silent,
  367.         /* [3] */
  368.         OK, visible, silent,
  369.         /* [4] */
  370.         OK, visible, silent
  371.     }
  372. };
  373.  
  374.  
  375. resource 'DITL' (rYesOrNo, purgeable) {
  376.     { /* array DITLarray: 4 elements */
  377.     
  378.         /* [1] */
  379.         {58,25,76,99},
  380.         Button {
  381.             enabled,
  382.             "YES!"
  383.         },
  384.         
  385.         /* [2] */
  386.         {86,25,104,99},
  387.         Button {
  388.             enabled,
  389.             "no"
  390.         },
  391.         
  392.         /* [3] */
  393.         {86,141,104,215},
  394.         Button {
  395.             enabled,
  396.             "cancel"
  397.         },
  398.         
  399.         
  400.         /* [4] */
  401.         {12,20,45,223},
  402.         StaticText {
  403.             disabled,
  404.             "^0"
  405.         }
  406.     }
  407. };
  408.  
  409.  
  410.  
  411. resource 'WIND' (rDocWindow, preload, purgeable) {
  412.     {64, 60, 314, 460},
  413.     zoomDocProc, invisible, goAway, 0x0, "untitled"
  414. };
  415.  
  416.  
  417. resource 'CNTL' (rVScroll, preload, purgeable) {
  418.     {-1, 385, 236, 401},
  419.     0, visible, 0, 0, scrollBarProc, 0, ""
  420. };
  421.  
  422.  
  423. resource 'CNTL' (rHScroll, preload, purgeable) {
  424.     {235, -1, 251, 386},
  425.     0, visible, 0, 0, scrollBarProc, 0, ""
  426. };
  427.  
  428. resource 'STR#' (kErrStrings, purgeable) {
  429.     {
  430.     "You must run on 512Ke or later";
  431.     "Application Memory Size is too small";
  432.     "Not enough memory to run Quill";
  433.     "Not enough memory to do Cut";
  434.     "Cannot do Cut";
  435.     "Cannot do Copy";
  436.     "Cannot exceed 32,000 characters with Paste";
  437.     "Not enough memory to do Paste";
  438.     "Cannot create window";
  439.     "Cannot exceed 32,000 characters";
  440.     "Cannot do Paste";
  441.     "Could not create self-address descriptor"
  442.     }
  443. };
  444.  
  445. /* here is the quintessential MultiFinder friendliness device, the SIZE resource */
  446.  
  447. resource 'SIZE' (-1) {
  448.     dontSaveScreen,
  449.     acceptSuspendResumeEvents,
  450.     enableOptionSwitch,
  451.     canBackground,                /* we can background; we don't currently, but our sleep value */
  452.                                 /* guarantees we don't hog the Mac while we are in the background */
  453.     doesActivateOnFGSwitch,            /* this says we do our own activate/deactivate; don't fake us out */
  454.     backgroundAndForeground,    /* this is definitely not a background-only application! */
  455.     dontGetFrontClicks,            /* change this is if you want "do first click" behavior like the Finder */
  456.     ignoreAppDiedEvents,        /* essentially, I'm not a debugger (sub-launching) */
  457.     not32BitCompatible,            /* this app should not be run in 32-bit address space */
  458.     isHighLevelEventAware,        /* <aevt */
  459.     localAndRemoteHLEvents,        /* <aevt */
  460.     reserved,
  461.     reserved,
  462.     reserved,
  463.     reserved,
  464.     reserved,
  465.     kPrefSize * 1024,
  466.     kMinSize * 1024    
  467. };
  468.  
  469.  
  470. type 'quil' as 'STR ';
  471.  
  472.  
  473. resource 'quil' (0) {
  474.     "AppleEvents-Aware Styled TextEdit Sample Application"
  475. };
  476.  
  477.  
  478. include "Quill.rsrc" not 'ckid';